
<!DOCTYPE HTML>
<html lang="zh-hans" >
    <head>
        <meta charset="UTF-8">
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <title>019_文件读写 · 瑕家瑾轩_Note</title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="description" content="">
        <meta name="generator" content="GitBook 3.2.3">
        <meta name="author" content="xiajiajinxuan">
        
        
    
    <link rel="stylesheet" href="../gitbook/style.css">

    
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-splitter/splitter.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-search-plus/search.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-page-toc-button/plugin.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-back-to-top-button/plugin.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-chapter-fold/chapter-fold.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-auto-scroll-table/website.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-highlight/website.css">
                
            
                
                <link rel="stylesheet" href="../gitbook/gitbook-plugin-fontsettings/website.css">
                
            
        

    

    
        
    
        
    
        
    
        
    
        
    
        
    

        
    
    
    <meta name="HandheldFriendly" content="true"/>
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../gitbook/images/apple-touch-icon-precomposed-152.png">
    <link rel="shortcut icon" href="../gitbook/images/favicon.ico" type="image/x-icon">

    
    <link rel="next" href="020_用户创建及授权.html" />
    
    
    <link rel="prev" href="018_json解析.html" />
    

    </head>
    <body>
        
<div class="book">
    <div class="book-summary">
        
            
<div id="book-search-input" role="search">
    <input type="text" placeholder="输入并搜索" />
</div>

            
                <nav role="navigation">
                


<ul class="summary">
    
    

    

    
        
        
    
        <li class="chapter " data-level="1.1" data-path="../">
            
                <a href="../">
            
                    
                    介绍
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2" data-path="../001_git教程/001_安装配置.html">
            
                <a href="../001_git教程/001_安装配置.html">
            
                    
                    001_git教程
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.2.1" data-path="../001_git教程/001_安装配置.html">
            
                <a href="../001_git教程/001_安装配置.html">
            
                    
                    001_安装配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2" data-path="../001_git教程/002_git常用语句及流程.html">
            
                <a href="../001_git教程/002_git常用语句及流程.html">
            
                    
                    002_git常用语句及流程
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.3" data-path="../002_gitbook教程/001_安装配置及使用.html">
            
                <a href="../002_gitbook教程/001_安装配置及使用.html">
            
                    
                    002_gitbook教程
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.3.1" data-path="../002_gitbook教程/001_安装配置及使用.html">
            
                <a href="../002_gitbook教程/001_安装配置及使用.html">
            
                    
                    001_安装配置及使用
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.3.2" data-path="../002_gitbook教程/002_生成文件目录.html">
            
                <a href="../002_gitbook教程/002_生成文件目录.html">
            
                    
                    002_生成文件目录
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.4" data-path="../003_typora/001_typora-markdown语法.html">
            
                <a href="../003_typora/001_typora-markdown语法.html">
            
                    
                    003_typora
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.4.1" data-path="../003_typora/001_typora-markdown语法.html">
            
                <a href="../003_typora/001_typora-markdown语法.html">
            
                    
                    001_typora-markdown语法
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.5" data-path="001_ORACLE关键字执行顺序.html">
            
                <a href="001_ORACLE关键字执行顺序.html">
            
                    
                    004_Oracle
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.5.1" data-path="001_ORACLE关键字执行顺序.html">
            
                <a href="001_ORACLE关键字执行顺序.html">
            
                    
                    001_ORACLE关键字执行顺序
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5.2" data-path="002_关键字_between.html">
            
                <a href="002_关键字_between.html">
            
                    
                    002_关键字_between
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5.3" data-path="003_数据库启停.html">
            
                <a href="003_数据库启停.html">
            
                    
                    003_数据库启停
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5.4" data-path="004_http请求.html">
            
                <a href="004_http请求.html">
            
                    
                    004_http请求
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5.5" data-path="005_NULL处理.html">
            
                <a href="005_NULL处理.html">
            
                    
                    005_NULL处理
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5.6" data-path="006_交集_并集_差集.html">
            
                <a href="006_交集_并集_差集.html">
            
                    
                    006交集并集_差集
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5.7" data-path="007_字符处理.html">
            
                <a href="007_字符处理.html">
            
                    
                    007_字符处理
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5.8" data-path="008_字符排序.html">
            
                <a href="008_字符排序.html">
            
                    
                    008_字符排序
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5.9" data-path="009_定时任务.html">
            
                <a href="009_定时任务.html">
            
                    
                    009_定时任务
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5.10" data-path="010_数字处理.html">
            
                <a href="010_数字处理.html">
            
                    
                    010_数字处理
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5.11" data-path="011_序列流水号.html">
            
                <a href="011_序列流水号.html">
            
                    
                    011_序列流水号
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5.12" data-path="012_时间日期处理.html">
            
                <a href="012_时间日期处理.html">
            
                    
                    012_时间日期处理
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5.13" data-path="013_死锁.html">
            
                <a href="013_死锁.html">
            
                    
                    013_死锁
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5.14" data-path="014_邮件发送.html">
            
                <a href="014_邮件发送.html">
            
                    
                    014_邮件发送
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5.15" data-path="015_转义字符.html">
            
                <a href="015_转义字符.html">
            
                    
                    015_转义字符
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5.16" data-path="016_触发器.html">
            
                <a href="016_触发器.html">
            
                    
                    016_触发器
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5.17" data-path="017_同义词.html">
            
                <a href="017_同义词.html">
            
                    
                    017_同义词
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5.18" data-path="018_json解析.html">
            
                <a href="018_json解析.html">
            
                    
                    018_json解析
            
                </a>
            

            
        </li>
    
        <li class="chapter active" data-level="1.5.19" data-path="019_文件读写.html">
            
                <a href="019_文件读写.html">
            
                    
                    019_文件读写
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5.20" data-path="020_用户创建及授权.html">
            
                <a href="020_用户创建及授权.html">
            
                    
                    020_用户创建及授权
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5.21" data-path="021_中文字符验证.html">
            
                <a href="021_中文字符验证.html">
            
                    
                    021_中文字符验证
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.6" data-path="../005_EBS/001_ebs模块.html">
            
                <a href="../005_EBS/001_ebs模块.html">
            
                    
                    005_EBS
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.6.1" data-path="../005_EBS/001_ebs模块.html">
            
                <a href="../005_EBS/001_ebs模块.html">
            
                    
                    001_ebs模块
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.2" data-path="../005_EBS/002_API列表.html">
            
                <a href="../005_EBS/002_API列表.html">
            
                    
                    002_API列表
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.3" data-path="../005_EBS/003_FND_GLOBAL和FND_PROFILE.html">
            
                <a href="../005_EBS/003_FND_GLOBAL和FND_PROFILE.html">
            
                    
                    003_FND_GLOBAL和FND_PROFILE
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.4" data-path="../005_EBS/004_IE相关设置.html">
            
                <a href="../005_EBS/004_IE相关设置.html">
            
                    
                    004_IE相关设置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.5" data-path="../005_EBS/005_MOAC.html">
            
                <a href="../005_EBS/005_MOAC.html">
            
                    
                    005_MOAC
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.6" data-path="../005_EBS/006_描述性弹性域.html">
            
                <a href="../005_EBS/006_描述性弹性域.html">
            
                    
                    006_描述性弹性域
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.7" data-path="../005_EBS/007_编译.html">
            
                <a href="../005_EBS/007_编译.html">
            
                    
                    007_编译
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.8" data-path="../005_EBS/008_界面数据查询.html">
            
                <a href="../005_EBS/008_界面数据查询.html">
            
                    
                    008_界面数据查询
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.9" data-path="../005_EBS/009_获取当前lov查询语句.html">
            
                <a href="../005_EBS/009_获取当前lov查询语句.html">
            
                    
                    009_获取当前lov查询语句
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.10" data-path="../005_EBS/010_表后缀.html">
            
                <a href="../005_EBS/010_表后缀.html">
            
                    
                    010_表后缀
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.11" data-path="../005_EBS/011_银行.html">
            
                <a href="../005_EBS/011_银行.html">
            
                    
                    011_银行
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.12" data-path="../005_EBS/012_错误代码及解释.html">
            
                <a href="../005_EBS/012_错误代码及解释.html">
            
                    
                    012_错误代码及解释
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.13" data-path="../005_EBS/013_WEBADI.html">
            
                <a href="../005_EBS/013_WEBADI.html">
            
                    
                    013_WEBADI
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.14" data-path="../005_EBS/014_请求参数间影响.html">
            
                <a href="../005_EBS/014_请求参数间影响.html">
            
                    
                    014_请求参数间影响
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.15" data-path="../005_EBS/015_FNDLOAD.html">
            
                <a href="../005_EBS/015_FNDLOAD.html">
            
                    
                    015_FNDLOAD
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.16" data-path="../005_EBS/016_配置文件.html">
            
                <a href="../005_EBS/016_配置文件.html">
            
                    
                    016_配置文件
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.17" data-path="../005_EBS/017_科目余额.html">
            
                <a href="../005_EBS/017_科目余额.html">
            
                    
                    017_科目余额
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.18" data-path="../005_EBS/018_供应商与客户.html">
            
                <a href="../005_EBS/018_供应商与客户.html">
            
                    
                    018_供应商与客户
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.19" data-path="../005_EBS/019_日记账.html">
            
                <a href="../005_EBS/019_日记账.html">
            
                    
                    019_日记账
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.20" data-path="../005_EBS/020_WebService发布与删除.html">
            
                <a href="../005_EBS/020_WebService发布与删除.html">
            
                    
                    020_WebService发布与删除
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6.21" data-path="../005_EBS/021_报表开发.html">
            
                <a href="../005_EBS/021_报表开发.html">
            
                    
                    021_报表开发
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.7" data-path="../006_FORM/001_数字格式设置.html">
            
                <a href="../006_FORM/001_数字格式设置.html">
            
                    
                    006_FORM
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.7.1" data-path="../006_FORM/001_数字格式设置.html">
            
                <a href="../006_FORM/001_数字格式设置.html">
            
                    
                    001_数字格式设置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.2" data-path="../006_FORM/002_Form状态.html">
            
                <a href="../006_FORM/002_Form状态.html">
            
                    
                    002_Form状态
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.3" data-path="../006_FORM/003_窗口消息.html">
            
                <a href="../006_FORM/003_窗口消息.html">
            
                    
                    003_窗口消息
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.4" data-path="../006_FORM/004_Form环境配置.html">
            
                <a href="../006_FORM/004_Form环境配置.html">
            
                    
                    004_Form环境配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.5" data-path="../006_FORM/005_打开窗口.html">
            
                <a href="../006_FORM/005_打开窗口.html">
            
                    
                    005_打开窗口
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.6" data-path="../006_FORM/006_日历LOV.html">
            
                <a href="../006_FORM/006_日历LOV.html">
            
                    
                    006_日历LOV
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.7" data-path="../006_FORM/007_form系统变量.html">
            
                <a href="../006_FORM/007_form系统变量.html">
            
                    
                    007_form系统变量
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.8" data-path="../006_FORM/008_层级与安全.html">
            
                <a href="../006_FORM/008_层级与安全.html">
            
                    
                    008_层级与安全
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.9" data-path="../006_FORM/009_item间关联.html">
            
                <a href="../006_FORM/009_item间关联.html">
            
                    
                    009_item间关联
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7.10" data-path="../006_FORM/010_FORM界面数字百分比显示.html">
            
                <a href="../006_FORM/010_FORM界面数字百分比显示.html">
            
                    
                    010_FORM界面数字百分比显示
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.8" data-path="../007_工具/001_ASCLL对照表.html">
            
                <a href="../007_工具/001_ASCLL对照表.html">
            
                    
                    007_工具
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.8.1" data-path="../007_工具/001_ASCLL对照表.html">
            
                <a href="../007_工具/001_ASCLL对照表.html">
            
                    
                    001_ASCLL对照表
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.8.2" data-path="../007_工具/002_HTML转义字符.html">
            
                <a href="../007_工具/002_HTML转义字符.html">
            
                    
                    002_HTML转义字符
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.8.3" data-path="../007_工具/003_HTTP CONTENT_TYPE.html">
            
                <a href="../007_工具/003_HTTP CONTENT_TYPE.html">
            
                    
                    003_HTTP CONTENT_TYPE
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.8.4" data-path="../007_工具/004_HTTP状态码详解.html">
            
                <a href="../007_工具/004_HTTP状态码详解.html">
            
                    
                    004_HTTP状态码详解
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

    

    <li class="divider"></li>

    <li>
        <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
            本书使用 GitBook 发布
        </a>
    </li>
</ul>


                </nav>
            
        
    </div>

    <div class="book-body">
        
            <div class="body-inner">
                
                    

<div class="book-header" role="navigation">
    

    <!-- Title -->
    <h1>
        <i class="fa fa-circle-o-notch fa-spin"></i>
        <a href=".." >019_文件读写</a>
    </h1>
</div>




                    <div class="page-wrapper" tabindex="-1" role="main">
                        <div class="page-inner">
                            
<div class="search-plus" id="book-search-results">
    <div class="search-noresults">
    
                                <section class="normal markdown-section">
                                
                                <h1 id="&#x6587;&#x4EF6;&#x8BFB;&#x5199;">&#x6587;&#x4EF6;&#x8BFB;&#x5199;</h1>
<blockquote>
<p>&#x76F8;&#x5173;&#x5DE5;&#x5177;&#x5305; utl_file</p>
</blockquote>
<h2 id="fgetattr-&#x83B7;&#x53D6;&#x6587;&#x4EF6;&#x5C5E;&#x6027;">fgetattr &#x83B7;&#x53D6;&#x6587;&#x4EF6;&#x5C5E;&#x6027;</h2>
<blockquote>
<p>fgetattr &#x83B7;&#x53D6;&#x6587;&#x4EF6;&#x5C5E;&#x6027;</p>
<p>location    &#x8DEF;&#x5F84;
filename    &#x6587;&#x4EF6;&#x540D;
fexists     &#x6587;&#x4EF6;&#x662F;&#x5426;&#x5B58;&#x5728;&#xFF0C;&#x5B58;&#x5728;&#x4E3A;true&#xFF0C;&#x4E0D;&#x5B58;&#x5728;&#x4E3A;false
file_length &#x6587;&#x4EF6;&#x5B57;&#x8282;&#x957F;&#x5EA6;
block_size  &#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x5757;&#x5B57;&#x8282;&#x5927;&#x5C0F;</p>
<p>PROCEDURE fgetattr(location    IN VARCHAR2,
                                     filename    IN VARCHAR2,
                                     fexists     OUT BOOLEAN,
                                     file_length OUT NUMBER,
                                     block_size  OUT BINARY_INTEGER);</p>
</blockquote>
<pre><code class="lang-plsql">DECLARE
  l_dir              VARCHAR2(32767);
  l_filename         VARCHAR2(32767);
  l_file_exists_flag BOOLEAN;
  l_file_length      NUMBER;
  l_block_size       NUMBER;
BEGIN
  l_dir      := &apos;/u01/dev/db/12.1.0/appsutil/outbound/DEV_ebsdev&apos;;
  l_filename := &apos;test.txt&apos;;
  --&#x83B7;&#x53D6;&#x6587;&#x4EF6;&#x5C5E;&#x6027;
  utl_file.fgetattr(location    =&gt; l_dir,
                    filename    =&gt; l_filename,
                    fexists     =&gt; l_file_exists_flag,
                    file_length =&gt; l_file_length,
                    block_size  =&gt; l_block_size);
  IF l_file_exists_flag THEN
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x5B58;&#x5728;&apos;);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x76EE;&#x5F55;&#xFF1A;&apos; || l_dir);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x540D;&#xFF1A;&apos; || l_filename);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x5B57;&#x8282;&#x957F;&#x5EA6;&#xFF1A;&apos; || l_file_length);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x5757;&#x5B57;&#x8282;&#x5927;&#x5C0F;&#xFF1A;&apos; || l_block_size);
  ELSE
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x4E0D;&#x5B58;&#x5728;&apos;);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x76EE;&#x5F55;&#xFF1A;&apos; || l_dir);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x540D;&#xFF1A;&apos; || l_filename);
  END IF;
EXCEPTION
  WHEN OTHERS THEN
    dbms_output.put_line(&apos;&#x9519;&#x8BEF;&#x4EE3;&#x7801;&apos; || SQLCODE);
    dbms_output.put_line(&apos;&#x9519;&#x8BEF;&#x4FE1;&#x606F;&apos; || SQLERRM);
    dbms_output.put_line(dbms_utility.format_error_backtrace);
END;
</code></pre>
<h2 id="fopen-&#x6253;&#x5F00;&#x6587;&#x4EF6;">fopen &#x6253;&#x5F00;&#x6587;&#x4EF6;</h2>
<blockquote>
<p>  location &#x4E3A;&#x6587;&#x4EF6;&#x76EE;&#x5F55; &#x76EE;&#x5F55;&#x5FC5;&#x987B;&#x5B58;&#x5728;&#x4E14;&#x53EF;&#x64CD;&#x4F5C;
  filename &#x4E3A;&#x6587;&#x4EF6;&#x540D;
  open_mode &#x4E3A;&#x6253;&#x5F00;&#x6A21;&#x5F0F; 
  R&#x53EA;&#x8BFB;&#xFF08;&#x6587;&#x672C;&#xFF09; W&#x5199;&#xFF08;&#x6587;&#x672C;&#xFF0C;&#x4F1A;&#x8986;&#x76D6;&#x539F;&#x6570;&#x636E;&#xFF09; A&#x5199;&#xFF08;&#x6587;&#x672C;&#xFF0C;&#x5728;&#x539F;&#x6570;&#x636E;&#x57FA;&#x7840;&#x4E0A;&#x8FFD;&#x52A0;&#xFF09; &#x5F53;&#x6A21;&#x5F0F;&#x4E3A;R&#x65F6;&#xFF0C;&#x6587;&#x4EF6;&#x5FC5;&#x987B;&#x5B58;&#x5728;,W/A&#x6A21;&#x5F0F;&#x65F6;&#xFF0C;&#x6587;&#x4EF6;&#x4E0D;&#x5B58;&#x5728;&#x4F1A;&#x81EA;&#x52A8;&#x521B;&#x5EFA;
  RB &#x53EA;&#x8BFB;&#xFF08;&#x5B57;&#x8282;&#xFF09; WB AB
  max_linesize &#x6BCF;&#x884C;&#x6700;&#x5927;&#x5B57;&#x7B26;&#x6570;&#xFF0C;1-32767&#x6216;null&#xFF0C;&#x9ED8;&#x8BA4;null</p>
<p>  FUNCTION fopen(location     IN VARCHAR2,
                 filename     IN VARCHAR2,
                 open_mode    IN VARCHAR2,
                 max_linesize IN BINARY_INTEGER DEFAULT NULL)
           RETURN file_type;</p>
</blockquote>
<h2 id="&#x5176;&#x4ED6;&#xFF1A;&#x4E0D;&#x5199;&#x4E86;&#xFF0C;&#x67E5;&#x770B;utlfile">&#x5176;&#x4ED6;&#xFF1A;&#x4E0D;&#x5199;&#x4E86;&#xFF0C;&#x67E5;&#x770B;utl_file</h2>
<h2 id="&#x6587;&#x4EF6;&#x5199;&#x5165;&#x6D4B;&#x8BD5;">&#x6587;&#x4EF6;&#x5199;&#x5165;&#x6D4B;&#x8BD5;</h2>
<pre><code class="lang-plsql">--&#x6587;&#x4EF6;&#x5199;&#x5165;&#x6D4B;&#x8BD5;
DECLARE
  l_dir              VARCHAR2(32767);
  l_filename_01      VARCHAR2(32767);
  l_filename_02      VARCHAR2(32767);
  l_file_write_01    utl_file.file_type;
  l_file_write_02    utl_file.file_type;
  l_file_open_flag   BOOLEAN;
  l_file_exists_flag BOOLEAN;
  l_file_length      NUMBER;
  l_block_size       NUMBER;
  l_string           VARCHAR2(32767);
BEGIN
  l_dir         := &apos;/u01/dev/db/12.1.0/appsutil/outbound/DEV_ebsdev&apos;;
  l_filename_01 := &apos;test.txt&apos;;
  l_filename_02 := &apos;test.csv&apos;;
  dbms_output.put_line(&apos;-----------------&#x83B7;&#x53D6;&#x6587;&#x4EF6;&#x5C5E;&#x6027;-----------------------&apos;);
  --&#x83B7;&#x53D6;&#x6587;&#x4EF6;&#x5C5E;&#x6027;
  utl_file.fgetattr(location    =&gt; l_dir,
                    filename    =&gt; l_filename_01,
                    fexists     =&gt; l_file_exists_flag,
                    file_length =&gt; l_file_length,
                    block_size  =&gt; l_block_size);
  IF l_file_exists_flag THEN
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x5B58;&#x5728;&apos;);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x76EE;&#x5F55;&#xFF1A;&apos; || l_dir);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x540D;&#xFF1A;&apos; || l_filename_01);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x5B57;&#x8282;&#x957F;&#x5EA6;&#xFF1A;&apos; || l_file_length);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x5757;&#x5B57;&#x8282;&#x5927;&#x5C0F;&#xFF1A;&apos; || l_block_size);
  ELSE
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x4E0D;&#x5B58;&#x5728;&apos;);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x76EE;&#x5F55;&#xFF1A;&apos; || l_dir);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x540D;&#xFF1A;&apos; || l_filename_01);
  END IF;
  dbms_output.put_line(&apos;----------------------&apos;);
  utl_file.fgetattr(location    =&gt; l_dir,
                    filename    =&gt; l_filename_02,
                    fexists     =&gt; l_file_exists_flag,
                    file_length =&gt; l_file_length,
                    block_size  =&gt; l_block_size);
  IF l_file_exists_flag THEN
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x5B58;&#x5728;&apos;);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x76EE;&#x5F55;&#xFF1A;&apos; || l_dir);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x540D;&#xFF1A;&apos; || l_filename_02);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x5B57;&#x8282;&#x957F;&#x5EA6;&#xFF1A;&apos; || l_file_length);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x5757;&#x5B57;&#x8282;&#x5927;&#x5C0F;&#xFF1A;&apos; || l_block_size);
  ELSE
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x4E0D;&#x5B58;&#x5728;&apos;);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x76EE;&#x5F55;&#xFF1A;&apos; || l_dir);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x540D;&#xFF1A;&apos; || l_filename_02);
  END IF;
  dbms_output.put_line(&apos;-----------------&#x6253;&#x5F00;&#x6587;&#x4EF6;:&apos; || l_filename_01 || &apos;-----------------------&apos;);
  --&#x6253;&#x5F00;&#x6587;&#x4EF6;  &#x5199;&#x5165;&#x6570;&#x636E;&#x6709;&#x4E24;&#x79CD;&#x65B9;&#x5F0F;&#xFF0C;&#x8986;&#x76D6;&#x5199;&#x5165; W &#x548C;&#x8FFD;&#x52A0;&#x5199;&#x5165; A,&#x6587;&#x4EF6;&#x82E5;&#x4E0D;&#x5B58;&#x5728;&#x5C06;&#x4F1A;&#x88AB;&#x521B;&#x5EFA;
  l_file_write_01  := utl_file.fopen(location     =&gt; l_dir,
                                     filename     =&gt; l_filename_01,
                                     open_mode    =&gt; &apos;W&apos;,
                                     max_linesize =&gt; NULL);
  l_file_open_flag := utl_file.is_open(file =&gt; l_file_write_01);
  IF l_file_open_flag THEN
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x5DF2;&#x6253;&#x5F00;&apos;);
  ELSE
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x5DF2;&#x5173;&#x95ED;&apos;);
  END IF;
  --&#x5199;&#x5165;&#x6570;&#x636E;
  dbms_output.put_line(&apos;-----------------&#x5199;&#x5165;&#x6570;&#x636E; W&#x6A21;&#x5F0F;-----------------------&apos;);
  --&#x4E0D;&#x4EE5;&#x6362;&#x884C;&#x7B26;&#x7ED3;&#x5C3E;
  utl_file.put(l_file_write_01,
               &apos;&#x4E0D;&#x6362;&#x884C;&#x6570;&#x636E;&apos;);
  utl_file.put(l_file_write_01,
               &apos;&#x4E0D;&#x6362;&#x884C;&#x6570;&#x636E;&apos;);
  --&#x5355;&#x884C;&#xFF0C;&#x4EE5;&#x6362;&#x884C;&#x7B26;&#x7ED3;&#x5C3E;
  utl_file.put_line(file      =&gt; l_file_write_01,
                    buffer    =&gt; &apos;&#x6362;&#x884C;&#x6570;&#x636E;&apos;,
                    autoflush =&gt; TRUE);
  utl_file.put_line(file      =&gt; l_file_write_01,
                    buffer    =&gt; &apos;&#x6362;&#x884C;&#x6570;&#x636E;&apos;,
                    autoflush =&gt; TRUE);
  --&#x5F3A;&#x5236;&#x5C06;&#x7F13;&#x51B2;&#x5199;&#x5165;&#x6587;&#x4EF6; 
  utl_file.fflush(file =&gt; l_file_write_01);
  utl_file.fclose(l_file_write_01);
  l_file_open_flag := utl_file.is_open(l_file_write_01);
  IF l_file_open_flag THEN
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x5DF2;&#x6253;&#x5F00;&apos;);
  ELSE
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x5DF2;&#x5173;&#x95ED;&apos;);
  END IF;
  dbms_output.put_line(&apos;-----------------&#x6253;&#x5F00;&#x6587;&#x4EF6;:&apos; || l_filename_02 || &apos;-----------------------&apos;);
  l_file_write_02  := utl_file.fopen(location     =&gt; l_dir,
                                     filename     =&gt; l_filename_02,
                                     open_mode    =&gt; &apos;A&apos;,
                                     max_linesize =&gt; NULL);
  l_file_open_flag := utl_file.is_open(file =&gt; l_file_write_02);
  IF l_file_open_flag THEN
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x5DF2;&#x6253;&#x5F00;&apos;);
  ELSE
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x5DF2;&#x5173;&#x95ED;&apos;);
  END IF;
  --&#x5199;&#x5165;&#x6570;&#x636E;
  dbms_output.put_line(&apos;-----------------&#x5199;&#x5165;&#x6570;&#x636E; A&#x6A21;&#x5F0F;-----------------------&apos;);
  --&#x4E0D;&#x4EE5;&#x6362;&#x884C;&#x7B26;&#x7ED3;&#x5C3E;
  utl_file.put(l_file_write_02,
               &apos;&#x4E0D;&#x6362;&#x884C;&#x6570;&#x636E;,&apos;);
  utl_file.put(l_file_write_02,
               &apos;&#x4E0D;&#x6362;&#x884C;&#x6570;&#x636E;,&apos;);
  --&#x5355;&#x884C;&#xFF0C;&#x4EE5;&#x6362;&#x884C;&#x7B26;&#x7ED3;&#x5C3E;
  utl_file.put_line(file      =&gt; l_file_write_02,
                    buffer    =&gt; &apos;&#x6362;&#x884C;&#x6570;&#x636E;&apos;,
                    autoflush =&gt; TRUE);
  utl_file.put_line(file      =&gt; l_file_write_02,
                    buffer    =&gt; &apos;&#x6362;&#x884C;&#x6570;&#x636E;&apos;,
                    autoflush =&gt; TRUE);
  --&#x5F3A;&#x5236;&#x5C06;&#x7F13;&#x51B2;&#x5199;&#x5165;&#x6587;&#x4EF6; 
  utl_file.fflush(file =&gt; l_file_write_02);
  utl_file.fclose(l_file_write_02);
  l_file_open_flag := utl_file.is_open(l_file_write_02);
  IF l_file_open_flag THEN
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x5DF2;&#x6253;&#x5F00;&apos;);
  ELSE
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x5DF2;&#x5173;&#x95ED;&apos;);
  END IF;
EXCEPTION
  WHEN OTHERS THEN
    dbms_output.put_line(&apos;&#x9519;&#x8BEF;&#x4EE3;&#x7801;&apos; || SQLCODE); 
    dbms_output.put_line(&apos;&#x9519;&#x8BEF;&#x4FE1;&#x606F;&apos; || SQLERRM); 
    dbms_output.put_line(dbms_utility.format_error_backtrace);
END;
</code></pre>
<p>&#x4E0B;&#x56FE;&#x4E3A;&#x591A;&#x6B21;&#x8FD0;&#x884C;&#x540E;&#x7684;&#x7ED3;&#x679C;&#xFF0C;&#x4EE5;W&#x6A21;&#x5F0F;&#x5199;&#x5165;&#x7684;&#x6587;&#x4EF6;&#x6570;&#x636E;&#x4F1A;&#x66FF;&#x6362;&#x539F;&#x6709;&#x7684;&#x6570;&#x636E;&#xFF0C;&#x4EE5;A&#x6A21;&#x5F0F;&#x5199;&#x5165;&#x7684;&#x6587;&#x4EF6;&#x6570;&#x636E;&#x4F1A;&#x5728;&#x539F;&#x6709;&#x6570;&#x636E;&#x7684;&#x57FA;&#x7840;&#x4E0A;&#x8FFD;&#x52A0;&#x5199;&#x5165;</p>
<p><img src="img/1594015680885.png" alt="1594015680885"></p>
<p><img src="img/1594015694869.png" alt="1594015694869"></p>
<h2 id="&#x6587;&#x4EF6;&#x8BFB;&#x53D6;&#x6D4B;&#x8BD5;">&#x6587;&#x4EF6;&#x8BFB;&#x53D6;&#x6D4B;&#x8BD5;</h2>
<pre><code class="lang-plsql">--&#x6587;&#x4EF6;&#x8BFB;&#x53D6;&#x6D4B;&#x8BD5;
DECLARE
  l_dir              VARCHAR2(32767);
  l_filename         VARCHAR2(32767);
  l_file_read  utl_file.file_type;
  l_file_open_flag   BOOLEAN;
  l_file_exists_flag BOOLEAN;
  l_file_length      NUMBER;
  l_block_size       NUMBER;
  l_string           VARCHAR2(32767);
BEGIN
  l_dir      := &apos;/u01/dev/db/12.1.0/appsutil/outbound/DEV_ebsdev&apos;;
  l_filename := &apos;test.csv&apos;;
  dbms_output.put_line(&apos;-----------------&#x83B7;&#x53D6;&#x6587;&#x4EF6;&#x5C5E;&#x6027;-----------------------&apos;);
  --&#x83B7;&#x53D6;&#x6587;&#x4EF6;&#x5C5E;&#x6027;
  utl_file.fgetattr(location    =&gt; l_dir,
                    filename    =&gt; l_filename,
                    fexists     =&gt; l_file_exists_flag,
                    file_length =&gt; l_file_length,
                    block_size  =&gt; l_block_size);
  IF l_file_exists_flag THEN
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x5B58;&#x5728;&apos;);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x76EE;&#x5F55;&#xFF1A;&apos; || l_dir);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x540D;&#xFF1A;&apos; || l_filename);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x5B57;&#x8282;&#x957F;&#x5EA6;&#xFF1A;&apos; || l_file_length);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;&#x5757;&#x5B57;&#x8282;&#x5927;&#x5C0F;&#xFF1A;&apos; || l_block_size);
  ELSE
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x4E0D;&#x5B58;&#x5728;&apos;);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x76EE;&#x5F55;&#xFF1A;&apos; || l_dir);
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x540D;&#xFF1A;&apos; || l_filename);
  END IF;
  dbms_output.put_line(&apos;-----------------&#x6253;&#x5F00;&#x6587;&#x4EF6; &#x4EE5;R&#x6A21;&#x5F0F;-----------------------&apos;);
  l_file_read := utl_file.fopen(location     =&gt; l_dir,
                                      filename     =&gt; l_filename,
                                      open_mode    =&gt; &apos;r&apos;,
                                      max_linesize =&gt; NULL);
  --2.&#x68C0;&#x67E5;&#x6587;&#x4EF6;&#x662F;&#x5426;&#x6253;&#x5F00;
  l_file_open_flag := utl_file.is_open(file =&gt; l_file_read);
  IF l_file_open_flag THEN
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x5DF2;&#x6253;&#x5F00;&apos;);
  ELSE
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x5DF2;&#x5173;&#x95ED;&apos;);
  END IF;
  dbms_output.put_line(&apos;-----------------&#x8BFB;&#x53D6;&#x6570;&#x636E;-----------------------&apos;);
  --&#x8BFB;&#x53D6;&#x6587;&#x4EF6;&#x6570;&#x636E; &#x4EC5;&#x80FD;&#x8BFB;&#x53D6;&#x6A21;&#x5F0F;&#x4E3A;R&#x7684;&#xFF0C;&#x5176;&#x4F59;&#x4F1A;&#x62A5;&#x9519; ORA-29283: &#x6587;&#x4EF6;&#x64CD;&#x4F5C;&#x65E0;&#x6548;
  --&#x8BFB;&#x53D6;&#x81F3;&#x6587;&#x4EF6;&#x672B;&#x5C3E;&#x65F6;&#x56DE;&#x62A5;no_data_found&#x5F02;&#x5E38;&#xFF0C;&#x9700;&#x5355;&#x72EC;&#x5904;&#x7406;
  LOOP
    BEGIN
      utl_file.get_line(file   =&gt; l_file_read,
                        buffer =&gt; l_string,
                        len    =&gt; NULL);
      dbms_output.put_line(&apos;&#x8BFB;&#x53D6;&#x7684;&#x5355;&#x884C;&#x6570;&#x636E;&#xFF1A;&apos; || l_string);
    EXCEPTION
      WHEN no_data_found THEN
        dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x8BFB;&#x53D6;&#x5B8C;&#x6210;&#xFF0C;&#x6B63;&#x5E38;&#x9000;&#x51FA;&apos;);
        EXIT;
      WHEN OTHERS THEN
        dbms_output.put_line(&apos;&#x5F02;&#x5E38;&#x9000;&#x51FA;&apos;);
        dbms_output.put_line(&apos;&#x9519;&#x8BEF;&#x4EE3;&#x7801;&apos; || SQLCODE); 
        dbms_output.put_line(&apos;&#x9519;&#x8BEF;&#x4FE1;&#x606F;&apos; || SQLERRM); 
        dbms_output.put_line(dbms_utility.format_error_backtrace);
        EXIT;
    END;
  END LOOP;
  dbms_output.put_line(&apos;-----------------&#x5173;&#x95ED;&#x6587;&#x4EF6;-----------------------&apos;);
  --&#x5173;&#x95ED;&#x6587;&#x4EF6;
  utl_file.fclose(l_file_read);
  l_file_open_flag := utl_file.is_open(l_file_read);
  IF l_file_open_flag THEN
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x5DF2;&#x6253;&#x5F00;&apos;);
  ELSE
    dbms_output.put_line(&apos;&#x6587;&#x4EF6;&#x5DF2;&#x5173;&#x95ED;&apos;);
  END IF;
EXCEPTION
  WHEN OTHERS THEN
    dbms_output.put_line(&apos;&#x9519;&#x8BEF;&#x4EE3;&#x7801;&apos; || SQLCODE); 
    dbms_output.put_line(&apos;&#x9519;&#x8BEF;&#x4FE1;&#x606F;&apos; || SQLERRM); 
    dbms_output.put_line(dbms_utility.format_error_backtrace);
END;
</code></pre>
<p>&#x7ED3;&#x679C;&#x5982;&#x4E0B;&#x56FE;</p>
<p><img src="img/1594016120561.png" alt="1594016120561"></p>

                                
                                </section>
                            
    </div>
    <div class="search-results">
        <div class="has-results">
            
            <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
            <ul class="search-results-list"></ul>
            
        </div>
        <div class="no-results">
            
            <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
            
        </div>
    </div>
</div>

                        </div>
                    </div>
                
            </div>

            
                
                <a href="018_json解析.html" class="navigation navigation-prev " aria-label="Previous page: 018_json解析">
                    <i class="fa fa-angle-left"></i>
                </a>
                
                
                <a href="020_用户创建及授权.html" class="navigation navigation-next " aria-label="Next page: 020_用户创建及授权">
                    <i class="fa fa-angle-right"></i>
                </a>
                
            
        
    </div>

    <script>
        var gitbook = gitbook || [];
        gitbook.push(function() {
            gitbook.page.hasChanged({"page":{"title":"019_文件读写","level":"1.5.19","depth":2,"next":{"title":"020_用户创建及授权","level":"1.5.20","depth":2,"path":"004_Oracle/020_用户创建及授权.md","ref":"004_Oracle/020_用户创建及授权.md","articles":[]},"previous":{"title":"018_json解析","level":"1.5.18","depth":2,"path":"004_Oracle/018_json解析.md","ref":"004_Oracle/018_json解析.md","articles":[]},"dir":"ltr"},"config":{"plugins":["github","splitter","-lunr","-search","search-plus","simple-page-toc","copy-code-button","page-toc-button","back-to-top-button","chapter-fold","auto-scroll-table","-sharing","livereload"],"root":".","styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"chapter-fold":{},"github":{"url":"https://github.com/xiajiajinxuan"},"livereload":{},"simple-page-toc":{"maxDepth":3,"skipFirstH1":false},"splitter":{},"auto-scroll-table":{},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"page-toc-button":{"maxTocDepth":2,"minTocSize":2},"back-to-top-button":{},"copy-code-button":{},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"search-plus":{}},"theme":"default","author":"xiajiajinxuan","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"瑕家瑾轩_Note","language":"zh-hans","gitbook":"*","description":"瑕家瑾轩_Note"},"file":{"path":"004_Oracle/019_文件读写.md","mtime":"2020-07-06T06:28:30.094Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2020-08-17T07:13:06.707Z"},"basePath":"..","book":{"language":""}});
        });
    </script>
</div>

        
    <script src="../gitbook/gitbook.js"></script>
    <script src="../gitbook/theme.js"></script>
    
        
        <script src="../gitbook/gitbook-plugin-github/plugin.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-splitter/splitter.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-search-plus/jquery.mark.min.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-search-plus/search.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-copy-code-button/toggle.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-page-toc-button/plugin.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-back-to-top-button/plugin.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-chapter-fold/chapter-fold.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-auto-scroll-table/plugin.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-livereload/plugin.js"></script>
        
    
        
        <script src="../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
        
    

    </body>
</html>

